package com.changjiang.luban.utils;

import java.util.Random;
import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 * Description:生成编码工具类
 *
 * @author changjiang
 * Date: 2018-04-04
 * Time: 11:49
 */
public class GenerateCodeUtils {


    /**
     * 生成唯一编号
     * @param machineId 最大支持1-9个集群机器部署
     * @return 16位的唯一编码
     */
    public static String getUUId(int machineId) {
        int hashCodeV = UUID.randomUUID().toString().hashCode();
        //有可能是负数
        if(hashCodeV < 0) {
            hashCodeV = - hashCodeV;
        }
        // 0 代表前面补充0
        // 4 代表长度为4
        // d 代表参数为正数型
        return machineId + String.format("%015d", hashCodeV);
    }

    private static final String DEFAULT_STR="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%";

    private static final String DEFAULT_NUM="123456789";

    /**
     * 随机获取指定长度的字符串
     * @param length 长度
     * @return 随机字符串
     */
    public static String generateRandomString(int length){
        return generateRandomString(DEFAULT_STR,length);
    }

    /**
     * 随机获取指定长度的字符串
     * @param str 随机字符串的内容
     * @param length 长度
     * @return 随机字符串
     */
    public static String generateRandomString(String str,int length){
        Random rd = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = rd.nextInt(str.length());
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }
}
